|
Overlap–save is the traditional name for an efficient way to evaluate the discrete convolution between a very long signal and a finite impulse response (FIR) filter : \ \sum_^ h() \cdot x() = \sum_^ h() \cdot x(),\,|}} where h()=0 for m outside the region (''M'' ). The concept is to compute short segments of ''y''() of an arbitrary length ''L'', and concatenate the segments together. Consider a segment that begins at ''n'' = ''kL'' + ''M'', for any integer ''k'', and define: : : Then, for ''kL'' + ''M'' ≤ ''n'' ≤ ''kL'' + ''L'' + ''M'' − 1, and equivalently ''M'' ≤ ''n'' − ''kL'' ≤ ''L'' + ''M'' − 1, we can write: : The task is thereby reduced to computing ''y''''k''(), for ''M'' ≤ ''n'' ≤ ''L'' +'' M'' − 1. The process described above is illustrated in the accompanying figure. Now note that if we periodically extend ''x''''k''() with period ''N'' ≥ ''L'' + ''M'' − 1, according to: : the convolutions and are equivalent in the region ''M'' ≤ ''n'' ≤ ''L'' + ''M'' − 1. So it is sufficient to compute the N-point circular (or cyclic) convolution of with in the region (). The subregion () is appended to the output stream, and the other values are discarded. The advantage is that the circular convolution can be computed very efficiently as follows, according to the circular convolution theorem: : where: *DFT and DFT−1 refer to the Discrete Fourier transform and inverse Discrete Fourier transform, respectively, evaluated over ''N'' discrete points, and *''N'' is customarily chosen to be an integer power-of-2, which optimizes the efficiency of the FFT algorithm. *Optimal N is in the range (8M ). ==Pseudocode==
抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Overlap–save method」の詳細全文を読む スポンサード リンク
|